package com.ctshk.rpc.finance.req.advance;

import com.ctshk.rpc.finance.json.FileJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 新增预收记录req
 */
@Data
@ApiModel(value = "AdvancePaymentAddReq",description = "新增预收记录req")
public class AdvancePaymentApplyAddReq implements Serializable {

    @NotNull(message = "供应商ID不能为空")
    @ApiModelProperty(value = "供应商ID",required = true)
    private Long supplierId;

    @ApiModelProperty(value = "供应商名称")
    private String supplierName;

    @ApiModelProperty(value = "类型（1：供应商 2：大客户）")
    private Integer type;

    @ApiModelProperty(value = "供应商联系人")
    private String supplierContacts;

    @ApiModelProperty(value = "供应商联系电话")
    private String supplierTelephone;

    @ApiModelProperty(value = "供应商联系邮箱")
    private String supplierEmail;

    @ApiModelProperty(value = "供应商地址")
    private String supplierAddress;

    @ApiModelProperty(value = "供应商银行名称")
    private String supplierBankName;

    @ApiModelProperty(value = "供应商银行卡号")
    private String supplierBankCard;

    @NotNull(message = "预收金额不能为空")
    @ApiModelProperty(value = "预收金额",required = true)
    private BigDecimal moneyAmount;

    @ApiModelProperty(value = "不可用金额")
    private BigDecimal unavailableAmount;

    @ApiModelProperty(value = "可用金额")
    private BigDecimal availableAmount;

    @NotNull(message = "币种ID不能为空")
    @ApiModelProperty(value = "币种ID",required = true)
    private Long currencyId;

    @ApiModelProperty(value = "币种")
    private String currency;

    @ApiModelProperty(value = "汇率")
    private Double exchangeRate;

    @NotNull(message = "收款方式id不能为空")
    @ApiModelProperty(value = "收款方式id",required = true)
    private Long paymentMethodId;

    @ApiModelProperty(value = "收款方式名称")
    private String paymentMethodName;

    @ApiModelProperty(value = "收款时间")
    private LocalDateTime collectionTime;

    @ApiModelProperty(value = "说明")
    private String explains;

    @NotNull(message = "附件不能为空")
    @ApiModelProperty(value = "附件",required = true)
    private List<FileJson> fileJson;

    @ApiModelProperty(value = "用户ID")
    private Long userId;

}
